┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ キー入力シミュレートドライバー ┃ ┃ 「KSD」 ┃ ┃ V1.7 ┃ ┃ Copyright (C) 1997,98 by AIG-Soft ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 説明書 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ これは何? ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ KSDは「Key Simulate Driver」の略で、キー入力をシミュレートするドライバーです ・・・ってそのままやんけ(^_^;)。 ファイルなどからの入力をキー入力に見せかけて入力させることが出来ます。 コマンドライン上でも使えますが、各種プログラムのキー入力を自動的に行わせる時 などに使えるでしょう。 本当はもっと重要な機能があるのですが、普通に使う分には表に出てきません。 くわしくはKSD.tecを参照してください。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 組み込み法 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ KSDはデバイスドライバーです。 Human68K V2.x以降で動作します。 (ただし確認したのはV3.02のみです。Human68Kのバージョン判定は 特にしていませんのでV1.xでも組み込めますが、動作しません。) CONFIG.SYS内のDEVICE=/PROGRAM=、さらにコマンドラインからの起動でも組み込めます。 常駐サイズは本体約1500バイト+キーボードバッファー分です。 KSD [オプション] キーバッファーサイズ 組み込みは、必ずキーボードバッファーのサイズ指定をともないます。 サイズ指定はバイト単位ですが、後ろに「K」を付けるとキロバイト単位になります (1024=1K)。実際には内部処理の都合のため、指定サイズ−1バイトまでがキーバッファー の容量となります。通常の利用において、バッファーエラーが起きないような十分なサイズ (3K以上)を指定した方が無難です。 「組み込み例」 DEVICE = A:¥SYS¥KSD.X 3072 -h (Config.sys) PROGRAM = A:¥SYS¥KSD.X 3072 -h (Config.sys) KSD.X 3K -h (コマンドライン) (ちなみに、device=とprogram=両方に記述した時は、記述の順序にかかわらず device=が優先されます。) DEVICE=以外で組み込んだ時には解除出来ます。 すでに組み込まれている時にコマンドラインから再度実行すると、内部状態を表示または 設定します(ただし、/Hオプションを付けたときはエラーになります)。 常駐しますと、SHIFT+登録のキー操作だけを乗っ取ります。他のプログラムで このキー操作を使っている場合には、それが操作出来なくなるので注意が必要です。 (現在のところ、このキー配置を'簡単'に変える方法は用意していません。) なお、利用にはFLOAT?.X(互換品)が必要です。 ┌───────────────────────────────────┐ │組み込み時の注意 │ └───────────────────────────────────┘ KSDは"@KEY"というデバイス名を追加します。 このため、組み込み後はファイル名として"@KEY"は使えなくなります。 注意してください。 また、すでに他のドライバーが@KEYを作っている場合には組み込めません。 ただし、後述の/Kオプションを使うとデバイス名を@KSDに変更出来ます。 その時は、以後、すべてのマニュアル内記述の@KEYを@KSDに読み換えてください。 ┌───────────────────────────────────┐ │オプション (-,/、英大文字小文字どちらでもOK) │ └───────────────────────────────────┘ 次のオプションは常駐時のみ有効です。 /H キーボードバッファーを高位メモリーから確保します。 高位メモリーとは実装メモリーの後ろからのメモリーのことで、 Xellent30や060Turboなどの持つHighメモリーではありません。 デフォルトは、KSDの真後ろにキーボードバッファーを確保します。 /K デバイス名を@KEYではなく@KSDにします。 他のデバイスドライバーが@KEYを使っている時など、どうしても組み込めない時だけに 設定します。 このオプションを付けた時は、@KEYの代わりに@KSDを使うことでまったく同じ 操作が出来ます。 /R 常駐を解除します。 DEVICE=で組み込まれたときは解除できません。 また、API(ksd.tecで説明)によって常駐解除ロックをされている時も 常駐解除出来ません。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 次のオプションは常駐時/常駐後に有効です。 /P KSDを休止状態にします。 /A KSDを活動状態にします。 /B 外部プログラム起動なし活動状態にします。 /O KSDを一時活動状態にします。 /S KSDを完全停止状態にします。 各状態の詳細に付いては後述します。 外部プログラム起動に付いての詳細はksd.tecでしています。 /C キーボードバッファーをクリアします。 /E 書き込みFull時には書き込めない分のデータは無視します 書き込めないデータは切り捨てられますが、この場合、書き込むデータが 2バイトコードデータであるかどうかの判定はしませんので、後の読み出しで 文字化けする可能性があります。 /F 書き込みFull時には古いデータを消して書き込みを継続させます 全データが書き込めるだけ、古いデータから読み出して空きを作り書き込みを 継続します。この場合、バッファー内が2バイトコードデータであるかどうか の判定はしませんので、後の読み出しで文字化けする可能性があります。 KSDの起動時の状態は、/A /C /Fの状態です。 状態設定オプション系を同一時に指定した時の優先順位は、 高 S>P>B>A>O 低 高 F>E 低 です(優先順位が高いもの程強く効く)。 ┌───────────────────────────────────┐ │エラー │ └───────────────────────────────────┘ オプションが規定外の時は簡易説明を表示して終了します。 *KSD組み込み時に発生する可能性の有るエラーは次の通りです。 「キーバッファーが確保できません」 メモリーが足りないので指定サイズのキーバッファーが確保できません。 もしくは、メモリーがおかしいのでバッファーが確保できません。 「キーバッファーサイズが異常です」 指定バッファーサイズが0です。 バッファーサイズは>0でなくてはいけません。 「すでに組み込まれています」 すでに組み込まれているのに、再度組み込もうとしました。 「デバイス名:@KEY はすでに使用されています」 デバイス@KEYは他のデバイスドライバーによって使われています。 /Kを付けて組み込みしてみてください。 「デバイス名:@KSD はすでに使用されています」 デバイス@KSDは他のデバイスドライバーによって使われています。 /Kをはずして組み込みしてみてください。 /Kを付けても付けなくても「すでに使用されている」エラーが出た時には KSDは組み込めません。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *KSD解除時に発生する可能性の有るエラーは次の通りです。 「ベクターが書き替えられています.KSDは解除できません」 DOSの_KFLUSH,IOCSの_B_KEYSNS/_B_KEYINP/_B_SFTSNSのベクターが、KSD組み込み後に 他のプログラムによって書き換えられています。この状態では解除できないので、 先に後から入れたプログラムを解除してからKSDを解除してください。 違うバージョンのKSDで常駐解除しようとした時にも発生することがあります。 「DEVICE=で組み込まれています.KSDは解除できません」 DEVICE=で組み込まれた時は解除出来ません。 「キーバッファーが解放できません.KSDは解除できません」 キーバッファーが解放できません。 「常駐ロックされています.KSDは解除できません」 APIにより常駐解除出来なくされています。 「組み込まれていません」 KSDは組み込まれていません。従って解除もできません。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ KSDの状態 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ KSDには大きく分けて以下の4つの状態があります。 活動状態 KSDの全機能が有効な状態。 (IOCSやDOSの)キー入力要求に対して、キーバッファー内容があればその内容を返し、 無ければ本来のキー読み込みを行います。 強制的に設定した場合、一時活動状態は解除されます。 外部プログラム起動なし活動状態 キーバッファーは使えますが、外部プログラム起動が使えない状態です。 強制的に設定した場合、一時活動状態は解除されます。 休止状態 キーバッファー内容があっても本来のキー読み込みを行います。 外部プログラム起動だけは使えます。 強制的に設定した場合、一時活動状態は解除されます。 一時活動状態 現在のキーバッファー内容がすべて読み出されるまで一時的に活動状態になります。 読み出し終わったら休止状態に戻り、一時活動状態は自動的に解除されます。 主に、元が休止状態の時に設定します。 (キーバッファー内容がある状態でのみ設定可能なので、外部プログラム起動は 出来ません。) 完全停止状態 キーバッファー内容があっても本来のキー読み込みを行います。 外部プログラム起動も使えなくなります。 強制的に設定した場合、一時活動状態は解除されます。 以上をまとめると、次のようになります。 オプション バッファー 外部プログラム起動 補足 -------------------------------------------------------------- A ○ ○ B ○ × O ○→× × /A→/P相当 P × ○ S × × いずれの状態でも、オプションや"@KEY"やAPIへの操作(ksd.tecにて説明)は 受け付けます。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 普通の使い方 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ KSDを組み込むとデバイス"@KEY"(小文字も可能)が追加されます。 これに対する書き込みによってキーバッファーに書き込まれ、キー入力でその内容が 読み出されます。ですから、通常の利用方法としては、次のようなものが考えられます。 (1)キー入力を自動化する キー入力を伴うコマンドの前で、必要なキー入力を記述したファイル k を @KEYに入れます。 type k > @key(Cp@Key k) キー入力を伴うコマンド typeをリダイレクトしているのは、copyではEOF($1a)まで入るためや、 一部のコントロールコードの処理の問題です。 テキストファイルでは、ファイルの改行($0a)とキーボードでの改行($0d)の 違いもあり、そのままcopy file @keyすることはお勧め出来ません。 テキストファイルにはCp@Key.x/Cp@KeyA.xを使います。 ファイルがテキストファイルでない場合にはcopy k @keyも使えます。 なお、どのような場合にも、データとして$00は書き込めません。 (2)必要な時にキーデータを取り込む (a)KSDを休止状態にする。 KDS -p (b)必要な時にSHIFT+登録でキーバッファー内容を読み出す(一時活動状態になる) 休止状態の時にSHIFT+登録を押すと、KSDはキーバッファー内容がある内だけ活動状態に なります。逆に言えば、キーバッファー内容を読み出してもらい終わったら休止状態に 戻ります。これにより、必要な時にキーバッファー内容を読み出すことが出来るわけです。 /B,/S状態では使えません。ご注意ください。 (3)プログラム間のデータやりとり プログラムA -> @KEY write -> プログラムB キー入力/read KSDをデバイス"@KEY"を通じてかAPIを通じて操作してデータを書き込み、 別のプログラムからそれを読み出します。 デバイス"@KEY"はデバイスドライバーとしていろいろなコマンドをサポートしますが、 それについてはksd.tecにて説明します。 ┌───────────────────────────────────┐ │使用上の注意 │ └───────────────────────────────────┘ (1)コマンドライン(COMMAND.X)は、||でコマンドをつないで実行したとき、 ||を通る時点でキーを1つ読みとってしまいます。このため、次のようなことをすると、 予測通りのファイル入力がされません。 [ファイルk] dir [コマンド] copy k @KEY||COPY @KEY kk こうしたとき、本来ファイルkkには"dir"と入っているべきですが、 実際には||で'd'が読みとられてしまい、"ir"となります。 さらに、コマンド実行後のコマンドライン先頭に'd'が出ます。 これを防ぐためには、一度休止状態にして受け渡しする必要があります。 ksd -p||copy k @KEY||COPY @KEY kk||ksd -a ||を使わなくても、コマンドライン上での利用は、勝手にキーが読み取られている ことがあるようで、うまくいかないことがあります。 (2)KSDを組み込むと、キー入力の処理に負荷がかかるので、キー入力が遅く なります。キーバッファーが空である/休止状態である時にはそれほどでもないですが (休止させた方が負荷がより少ない)、活動状態では処理負荷がありますのでご注意 ください。特に、10MHzの機種でリアルタイムでキー入力を使っている場合には 問題になるかも知れません(未確認)。完全休止状態にするとIOCSとほぼ同等になります。 処理負荷 状態 軽い 組み込んでない (元のまま) ↑ 完全停止状態 /S | 外部プログラム起動なし活動状態 /B | 休止状態 /P |以下活動状態 /A | キーバッファーあり ↓ 起動キーを追加していない 重い 起動キーを追加している ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ テストしたソフト ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 以下のソフトで、一応の動作テストをしています。 ただし、ちょっとやってみただけであり、その上での動作を(すべての場面に於いて) 保証するものではありません。 エディター系のものは、オートインデントがある場合、offにしていた方がいいでしょう。 ------------------------------------------------------------------------------- 結果 ソフト名 バージョン 作者 補足 ------------------------------------------------------------------------------- エディター系 ○ SuperED.X v1.18 T.Nishikawa ○ ED.R v0.99XD S.Ueda ○ ED.X v?.?? SHARP/Hudson ○ MY.X v1.16 JOJO ○ EDT.X V1.55 いろもの物理学者 △ FES.X V1.26a ずうやん ASC入力時のみ可能 ○ NG68.X V1.3.1 M.Suzuki ○ NG12.X V1.3.1 M.Suzuki ビューワー系 ○ LOQUAT.R v1.02 TAMA. 文字列検索枠内 ○ MSV.X V0.84 SaTa. 文字列検索枠内 システム系 ○ COMMAND.X V3.00 SHARP/Hudson 仮名漢字変換ラインもok ○ X-BASIC V2.02 SHARP/Hudson ○ SCD.X v3.00 SHARP/Hudson ファイラー × WS V0.90 Fuchi その他 ○ Condrv.sys v1.09c 卑弥呼☆ 同時常駐可能(KSDが後) +30用パッチ Mews ○ Condrv.sys v1.09c+09a 卑弥呼☆/立花えり子 同時常駐可能(KSDが後) ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ お約束 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ (1)転載は、無料ネットへの場合、特に制限はありません。自由です。 有料ネットへの転載・ホームページへの掲載は「必ず事前に」ご連絡下さい。 各種メディアによる販売も個人/企業を問わず「必ず事前に」ご連絡下さい。 Q2ネットへの転載は「禁止」です。 (2)このプログラムを使って発生したのいかなる問題にも、当方は関知しません。 動かない・動作がおかしいと思う時は、LeDAまでお知らせ下さい。 また、こうした方が良い等のいろいろな御意見・御感想もお待ちしております。 単に「使っている!」やバグ報告、「説明書の内容がよくわからん!」でもけっこうです。(^_^;) これが、皆さんに、長く使っていただけるツールであることと、 このプログラムを使う、X68現役ユーザーが多いことを祈りながら・・・。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 連絡先 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ PowerStation PS0071 満開ネット MKSX0424 E-Mail LeDA@osaka.email.ne.jp 上記ならよく連絡が付きますが、まれにしばらく通信出来なくなることがありますので、 気長にお待ち下さい。 LeDA